{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. 单变量的线性方程\n",
    "以 y = 7.0 * x +2.9 为例"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. 准备数据\n",
    "通过生成人工数据集：\n",
    "随机生成一个近似采样随机分布，使得 w = 7.0, b = 2.9, 并加入一个噪声，噪声的最大振幅为0.6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "x_data = np.linspace(-1, 1, 100)  # 生成-1到1之间的100个等差数列点\n",
    "y_data = 7.0 * x_data + 2.9 + np.random.randn(*x_data.shape) * 0.6  # y = 7.0x + 2.9 + 噪声\n",
    "plt.scatter(x_data, y_data, label=\"Original data\", color=\"red\")\n",
    "plt.plot(x_data, 7.0 * x_data + 2.9, label=\"Setting line\", color=\"green\", linewidth=\"3\")\n",
    "plt.legend()  # 显示图例\n",
    "plt.show()  # 显示图表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3. 构建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From c:\\users\\dell\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\framework\\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n"
     ]
    }
   ],
   "source": [
    "# 定义训练数据的占位符， x是特征值， y是标签值\n",
    "x = tf.placeholder(tf.float32, name=\"x\")\n",
    "y = tf.placeholder(tf.float32, name=\"y\")\n",
    "\n",
    "\n",
    "# 定义模型函数 y = w * x+ b\n",
    "def model(x, w, b):\n",
    "    return tf.multiply(x, w) + b\n",
    "\n",
    "\n",
    "w = tf.Variable(0.5, name=\"w0\")     # 定义线性函数的斜率\n",
    "b = tf.Variable(0.1, name=\"b0\")     # 定义线性函数的截距\n",
    "pred = model(x, w, b)               # 定义线性函数的预测值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4. 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From c:\\users\\dell\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\tensorflow\\python\\ops\\math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.cast instead.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_epochs = 8        # 设置迭代次数\n",
    "learning_rate = 0.05    # 学习率 步长\n",
    "\n",
    "# 采用均方差作为损失函数\n",
    "loss_function = tf.reduce_mean(tf.square(y - pred))\n",
    "\n",
    "# 梯度下降优化器 设置学习率和优化目标损失最小化\n",
    "optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)\n",
    "\n",
    "sess = tf.Session()  # 建立会话\n",
    "init = tf.global_variables_initializer()  # 变量初始化\n",
    "sess.run(init)\n",
    "\n",
    "# 迭代训练\n",
    "for epoch in range(train_epochs):\n",
    "    for xs, ys in zip(x_data, y_data):\n",
    "        _, loss = sess.run([optimizer, loss_function], feed_dict={x: xs, y: ys})\n",
    "    b0temp = b.eval(session=sess)\n",
    "    w0temp = w.eval(session=sess)\n",
    "    plt.plot(x_data, w0temp * x_data + b0temp)\n",
    "plt.show()  # 显示图表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w: 6.9775567\n",
      "b: 2.8976731\n"
     ]
    }
   ],
   "source": [
    "# 查看权重\n",
    "print(\"w:\", sess.run(w))\n",
    "print(\"b:\", sess.run(b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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TZs2pUmTJgwZMoRDhw75Pdduat2LL76YXbt2Vag9Y8eO5dFHHw16XqA0wG67du3i2WefrVAblEp4OTmwaRMUF1sfywm+IjB3yOe0rJPHmDH4BPW+fWHNGhj7Q09PUHeLQg52bxrYXUSEyy67jN69e7Nu3TrWrl3L3r17Ge3nm1FUVGQ7te4777xD3bp1I9Fk2zSwK1VKBbarW7oUzm39O32ePIvNhxuVlLc3S1kw+kNmz3YNzVdSDnZv8RvYHd5H8JNPPiElJYVrr70WsHKyTJo0iZdeeomCggKmTZtGnz59uOSSSzj//PN9UusWFBTQt29f2rVrx5VXXslpp53GokWLACsr5M6dO9m0aRMtW7bkn//8J61bt+b8889nv+vX/fPPP88pp5xC+/btufzyyykoPf2qlEBpgPfu3Uu3bt3o2LEjbdu2LVn5OnLkSDZs2EBWVhbDhg0LeJ5SVUKIc9d37oSbb4YOHWDBKk921jR2MoUbWSwdOHvmPz0XBHrwGuEc7D7srGJy+tWpU6cyK6pCWuVoY8VXqCZPniy33357mfKsrCz56aef5OWXX5YTTjhB8vPzRURk48aN0rp1axERmThxogwaNEhERJYtWybJycny/fffi4hIRkaG7NixQzZu3CjJycny448/iohInz59ZMaMGSIisnPnzpL7jR49Wp588kkRERkzZoxMnDixTJsuueQSmT59uoiIPP3003LEEUeIiEhhYaHs3r1bRER27NghTZo0keLiYp+2lndeabryVCWkjAz/qaQyMnxOKywUefJJkbp1fU9LplCGMEn+wOuAMZ4LIxCf3IjSytPKEYF9BEXEbwZG7/Lu3btTv379Mud8+eWX9OvXD4A2bdrQrl07v/do3LgxWa55T506dWLTpk0ALF++nDPPPJO2bduSm5vLihUrym3rwoULueoqa/bpgAEDfNo6atQo2rVrx3nnncevv/7Ktm3b/P6b7JynVEyr6F/tNoZKPvoIshrvYvBg8H5E1j3lc5bSjicYSj28Dnj3xispB7u3+AzsERjDat26dcnwidtff/3FL7/8QpMmTQA44ogj/F4rNjP7+Eu/C3DNNdfw9NNPs2zZMsaMGcOBAweC1uXvl1Bubi47duxg8eLFLFmyhGOOOcZvXXbPUypmhZMKoJyhkp9/hksvhe7dYUWe59lYE9bzRo2+vH/N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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 结果可视化\n",
    "plt.scatter(x_data, y_data, label=\"Original data\", color=\"red\")\n",
    "plt.plot(x_data, x_data * sess.run(w) + sess.run(b), label=\"Fitted line\", color=\"Blue\", linewidth=\"3\")\n",
    "plt.legend()  # 显示图例\n",
    "plt.show()  # 显示图表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5. 模型预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预测值：46.716732\n",
      "目标值：46.860000\n"
     ]
    }
   ],
   "source": [
    "x_test = 6.28  # 测试值\n",
    "\n",
    "# 模型预测\n",
    "predict = sess.run(pred, feed_dict={x: x_test})\n",
    "print(\"预测值：%f\" % predict)\n",
    "\n",
    "target = 7.0 * x_test + 2.9\n",
    "print(\"目标值：%f\" % target)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
